package com.android.rukiadia.memo;

//import com.android.rukiadia.dmmemover4.twitter.*;

import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ListView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/** メモを書くプログラム */
public class MainActivity extends ListActivity implements OnClickListener {
	
	static final String MEMO_FILE = "memo.txt";//テキストファイル名
	private static final String NEW_LINE_CODE = System.getProperty("line.separator");//改行の挿入
	private final ArrayList<String> mMemo = new ArrayList<String>();//書いた内容を保持するデータ内容
	private EditText mMemoEdit;
	private ArrayAdapter<String> mAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMemoEdit = (EditText)findViewById(R.id.memoEdit);
        View savebtn = (Button)findViewById(R.id.save_button);
        savebtn.setOnClickListener(this);

        try{
        	//ファイルをmMemoに読み込む
        	readFile(MEMO_FILE);
        } catch (IOException e) {
        	e.printStackTrace();
        }

        //メモをリストに変換して表示
        mAdapter = new ArrayAdapter<String>(this,
        		R.layout.list_view, //表示レイアウト（SDKに付属するレイアウト）
        		R.id.listtext, //TextViewのID
        		mMemo //リスト表示するArrayList
        		);

        //リストに設定する
        setListAdapter(mAdapter);
    }

    /*
     * 以降にボタン押下時と、リスト押下時の処理を記載
     */

    //保存ボタンが押された時の処理
    
    public void onClick(View v){
    	switch(v.getId()){
    	//メモ保存ボタンを押した時の処理
    	case R.id.save_button:
    		String memoMessage = mMemoEdit.getText().toString();
    		//記入内容をメモとして保存
    		//記入欄が空白の時は処理を行わない
    		if (memoMessage.length() != 0){
	    		memoMessage = memoMessage.replaceAll(NEW_LINE_CODE, "");
	    		try {
	    			mMemo.add(memoMessage);
	    			saveMemo(mMemo);
	    			mAdapter.notifyDataSetChanged();
	    		} catch (Exception e) {
	    			e.printStackTrace();
	    		}
	    		mMemoEdit.setText("");
	    		Toast.makeText(this, R.string.save_msg, Toast.LENGTH_SHORT).show();
    		} else {
    			Toast.makeText(this, R.string.error_msg, Toast.LENGTH_SHORT).show();
    		}
    		break;
    	}
    }

    //リスト領域がタップされると、内容が削除されるようにする
    protected void onListItemClick(ListView l, View v, int position, long id){

    	//TODO タップした際に削除するかしないかを聞くダイアログが欲しい

    	mMemo.remove(position); //選択された要素を削除
    	try {
    		saveMemo(mMemo); //保存
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	mAdapter.notifyDataSetChanged(); //リストを更新する
    	Toast.makeText(this, R.string.delete_msg, Toast.LENGTH_SHORT).show();
    }

    //保存処理
    private void saveMemo(final ArrayList<String> memo) throws FileNotFoundException, IOException{
    	FileOutputStream fo = openFileOutput(MEMO_FILE, MODE_PRIVATE);
    	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fo));
    	int size = memo.size();

    	for (int i = 0; i < size ; i++){
    		bw.write(memo.get(i)); //メモの書き出し
    		bw.newLine(); //改行
    	}

    	bw.close();
    	fo.close();
    }

    //アプリ内のファイルを開く処理
    private void readFile(String filename) throws FileNotFoundException, IOException {
    	FileInputStream fi = openFileInput(filename);
    	BufferedReader br = new BufferedReader(new InputStreamReader(fi));
    	String line = null;
    	while ((line = br.readLine()) != null){
    		mMemo.add(line); //1つのメモを一行づつ読み込む
    	}

    	br.close();
    	fi.close();

    }
    
    /*
    //メニューボタンの作成
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
    	MenuInflater inflater = getMenuInflater();
    	inflater.inflate(R.menu.menu, menu);
    	return true;
    }
    
    //メニューの起動処理
    @Override
    public boolean onOptionsItemSelected(MenuItem item){

    }
    */

}